# Huffman Makefile
#

# Macros

CC		:=	gcc -Wall -Ilib -g -pthread
RM		:=	rm -f
LD		:=	gcc -Ilib
MASTER_BINARY	:=	master
MASTER_DIR 	:=	master
CHUNKSRV_BINARY	:=	chunksrv
CHUNKSRV_DIR 	:=	chunksrv
LIB_DIR		:=	lib

# Targets

all: $(CHUNKSRV_DIR)/$(CHUNKSRV_BINARY) $(MASTER_DIR)/$(MASTER_BINARY)

$(CHUNKSRV_DIR)/$(CHUNKSRV_BINARY): $(CHUNKSRV_DIR)/chunksrv.o

$(CHUNKSRV_DIR)/chunksrv.o: $(CHUNKSRV_DIR)/chunksrv.c

$(MASTER_DIR)/$(MASTER_BINARY): $(MASTER_DIR)/master.o  $(MASTER_DIR)/btree.o  $(MASTER_DIR)/huffman.o $(MASTER_DIR)/chunk.o $(MASTER_DIR)/file.o $(MASTER_DIR)/chunksrv.o $(MASTER_DIR)/heap.o $(MASTER_DIR)/dc.o $(MASTER_DIR)/llist.o $(LIB_DIR)/bitfield.o $(LIB_DIR)/uuid.o $(LIB_DIR)/net_server.o $(LIB_DIR)/debug.o 

$(MASTER_DIR)/master.o :  $(MASTER_DIR)/master.c $(LIB_DIR)/debug.h  $(MASTER_DIR)/btree.h $(LIB_DIR)/uuid.h $(MASTER_DIR)/file.h $(LIB_DIR)/net_server.h

$(MASTER_DIR)/btree.o :  $(MASTER_DIR)/btree.c  $(MASTER_DIR)/btree.h $(MASTER_DIR)/file.h

$(MASTER_DIR)/huffman.o :  $(MASTER_DIR)/huffman.c $(LIB_DIR)/bitfield.h  $(MASTER_DIR)/freq.h  $(MASTER_DIR)/huffman.h

$(MASTER_DIR)/chunk.o : $(MASTER_DIR)/chunk.c  $(MASTER_DIR)/chunk.h $(MASTER_DIR)/chunksrv.h $(LIB_DIR)/uuid.h

$(MASTER_DIR)/file.o :  $(MASTER_DIR)/file.c $(MASTER_DIR)/file.h $(LIB_DIR)/bitfield.h

$(MASTER_DIR)/chunksrv.o : $(MASTER_DIR)/chunksrv.c  $(MASTER_DIR)/chunksrv.h $(MASTER_DIR)/dc.h

$(MASTER_DIR)/heap.o : $(MASTER_DIR)/heap.c $(MASTER_DIR)/heap.h  $(MASTER_DIR)/chunksrv.h

$(MASTER_DIR)/dc.o : $(MASTER_DIR)/dc.c $(MASTER_DIR)/dc.h  $(MASTER_DIR)/heap.h  $(MASTER_DIR)/chunksrv.h

$(MASTER_DIR)/llist.o : $(MASTER_DIR)/llist.c $(MASTER_DIR)/llist.h $(MASTER_DIR)/dc.h

$(LIB_DIR)/bitfield.o : $(LIB_DIR)/bitfield.c $(LIB_DIR)/bitfield.h

$(LIB_DIR)/uuid.o : $(LIB_DIR)/uuid.c $(LIB_DIR)/uuid.h

$(LIB_DIR)/net_server.o : $(LIB_DIR)/net_server.c $(LIB_DIR)/net_server.h

$(LIB_DIR)/debug.o: $(LIB_DIR)/debug.c $(LIB_DIR)/debug.h $(MASTER_DIR)/btree.h $(MASTER_DIR)/huffman.h $(LIB_DIR)/bitfield.h $(LIB_DIR)/uuid.h $(MASTER_DIR)/llist.h  $(MASTER_DIR)/file.h  $(MASTER_DIR)/chunk.h $(MASTER_DIR)/heap.h

clean:
	$(RM) *~ *.o $(MASTER_DIR)/$(MASTER_BINARY) $(LIB_DIR)/*~ $(LIB_DIR)/*.o $(MASTER_DIR)/*~ $(MASTER_DIR)/*.o $(CHUNKSRV_DIR)/*~ $(CHUNKSRV_DIR)/*.o $(CHUNKSRV_DIR)/$(CHUNKSRV_BINARY)


